package sanmubird.club.mock.service;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.BDDMockito;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;


/**
 * @author sam
 * @date 2019/12/7 18:24
 * @description 功能描述
 */
@RunWith(SpringRunner.class)
public class MockRemoteInvokeServiceTest2 {

	// SpyBean和 MockBean生成的对象受spring管理，相当于自动替换对应类型bean的注入，比如@Autowired等注入
	// SpyBean 和 MockBean 的区别: SpyBean 间谍bean 意味着 需要有真实的bean存在 ；
	// 就如这里 如果将 MockBean 替换成 SpyBean 会项目启动失败的
	//  @MockBean 只能 mock 本地的代码——或者说是自己写的代码，对于储存在库中而且又是以 Bean 的形式装配到代码中的类无能为力
	@MockBean MockRemoteInvokeService mockRemoteInvokeService;

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void remoteInvoke() {
		String expected = "responseFromRemoteInvoke";
		BDDMockito.given(mockRemoteInvokeService.remoteInvoke()).willReturn(expected);
		final String actual = mockRemoteInvokeService.remoteInvoke();
		Assert.assertEquals("远程调用 校验结果是： ", expected, actual);
	}
}
